% implementation
For this project, we chose to implement a \st{} framework which we call \doclists{} (for
\emph{\doclists} \emph{I}s \emph{S}uffix\emph{T}ree \emph{S}earch) in the JAVA programming language.
\\
Java was chosen primarily because it provides for platform independence.

We give here a short introduction to the core components of the framework. The sources are readily
available for in-deep investigation\footnote{http://code.google.com/p/doclists/source/}, and a
complete documentation of all classes is provided via their JAVA-Doc.

The main components comprising the framework are classes for the \st{s} themselves, as well as a
Constructor-class for building and a Search-class for performing searches on these trees.

The \st{} class itself represents \st{s} made of edges and nodes. The former are enriched with a
start and end token of the suffix inside a refrence document as well as start and end node of the edge. The nodes contain
information about all documents that share the suffix of all combined edge labels from the \st{'s}
root node up to the node under investigation. Nodes and edges can be identified by a hash id. The nodes hs id correlates with the nodes id. The edges hash id is calculated using the start node of the edge and the start token of the edge. The nodes and edges are stored in a map.

For building \st{s}, we use a special Constructor-class. This Constructor class is able to generate
a \st{} for a given set of documents in linear time using Ukkonen's Algorithm, using links between
the tree's nodes for keeping track of consecutive changes to its structure.

The final main component of the framework is the Search-class. For a given \st{}, it retrieves a
list of all relevant documents with respect to a query. It is designed to support a number of
different weight-function for calculating the relevance of retrieved documents, as well as different
query processors that handle the search by using, for example, strict or fuzzy matching.
